/**
  * Rust 的 panic（崩溃）在 WebAssembly 环境中默认不会输出详细的错误信息，而是简单地停掉程序或导致 WebAssembly 模块崩溃。
    在开发阶段，这很难定位错误原因。console_error_panic_hook 库的作用是捕获 Rust 的 panic，并将详细的错误信息输出到浏览器的 console.error 中，方便开发和调试。 

  * console_error_panic_hook 依赖了 std::fmt 和 std::panicking，这会增加最终 WebAssembly 的大小。因此在生产环境中，开发者通常选择禁用它以减小代码体积。
  * 将 set_panic_hook 放在 utils 模块中，让开发者自己决定是否启用，而不是强制使用。
  
  * 使用： 
    mod utils;
    #[wasm_bindgen]
    pub fn greet() {
        utils::set_panic_hook(); // 设置 panic hook
        alert("Hello, hello-wasm!");
        log("Hello, hello-wasm!");
    }
  *
  */
pub fn set_panic_hook() {
    // When the `console_error_panic_hook` feature is enabled, we can call the
    // `set_panic_hook` function at least once during initialization, and then
    // we will get better error messages if our code ever panics.
    //
    // For more details see
    // https://github.com/rustwasm/console_error_panic_hook#readme
    #[cfg(feature = "console_error_panic_hook")]
    console_error_panic_hook::set_once();
}
